from __future__ import annotations
from extensions import db
from datetime import datetime
from sqlalchemy import func  # 新增导入

class Mentorship(db.Model):
    __tablename__ = 'mentorship'

    # 师傅ID（作为联合主键）
    mentor_id = db.Column(db.String(36), db.ForeignKey('users.user_id', ondelete='CASCADE'), primary_key=True)
    # 徒弟ID（作为联合主键）
    apprentice_id = db.Column(db.String(36), db.ForeignKey('users.user_id', ondelete='CASCADE'), primary_key=True)
    # 所属店铺ID
    store_id = db.Column(db.String(36), db.ForeignKey('stores.store_id', ondelete='CASCADE'), nullable=False)

    def __init__(self, mentor_id: str, apprentice_id: str, store_id: str):
        self.mentor_id = mentor_id
        self.apprentice_id = apprentice_id
        self.store_id = store_id
    # 记录创建时间
    created_at = db.Column(
        db.DateTime,
        server_default=func.now(),  # 优先使用数据库当前时间
        default=datetime.utcnow     # 使用Python系统时间作为后备
    )
    # 记录最后更新时间
    updated_at = db.Column(
        db.DateTime,
        server_default=func.now(),  # 优先使用数据库当前时间
        default=datetime.utcnow,    # 使用Python系统时间作为后备
        onupdate=datetime.utcnow    # 更新时使用Python系统时间
    )

    # 关联关系定义
    # 师傅关联（一对多：一个师傅可以有多个徒弟）
    mentor = db.relationship('User', foreign_keys=[mentor_id], backref=db.backref('apprentices', lazy='dynamic'))
    # 徒弟关联（一对一：一个徒弟只能有一个师傅）
    apprentice = db.relationship('User', foreign_keys=[apprentice_id], backref=db.backref('mentor_relationship', lazy=True, uselist=False))
    # 店铺关联（一对多：一个店铺可以有多个师徒关系）
    store = db.relationship('Store', lazy=True)

    @property
    def split_ratio(self):
        """从店铺配置中获取师徒关系分成比例"""
        from .store import Store
        store = Store.query.get(self.store_id)
        return float(store.mentorship_split_ratio) if store else 0.0

    def __repr__(self):
        return f'<Mentorship {self.mentor_id}-{self.apprentice_id}>'